export default {
  /**
   * @author chuzhixin 1204505056@qq.com （不想保留author可删除）
   * @description 格式化时间
   * @param time
   * @param cFormat
   * @returns {string|null}
   */
  parseTime(time, cFormat) {
    if (arguments.length === 0) {
      return null
    }
    const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
    let date
    if (typeof time === 'object') {
      date = time
    } else {
      if (typeof time === 'string' && /^[0-9]+$/.test(time)) {
        time = parseInt(time)
      }
      if (typeof time === 'number' && time.toString().length === 10) {
        time = time * 1000
      }
      date = new Date(time)
    }
    const formatObj = {
      y: date.getFullYear(),
      m: date.getMonth() + 1,
      d: date.getDate(),
      h: date.getHours(),
      i: date.getMinutes(),
      s: date.getSeconds(),
      a: date.getDay(),
    }
    const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
      let value = formatObj[key]
      if (key === 'a') {
        return ['日', '一', '二', '三', '四', '五', '六'][value]
      }
      if (result.length > 0 && value < 10) {
        value = '0' + value
      }
      return value || 0
    })
    return time_str
  },
  /**
   * @author chuzhixin 1204505056@qq.com （不想保留author可删除）
   * @description 格式化时间
   * @param time
   * @param option
   * @returns {string}
   */
  formatTime(time, option) {
    if (('' + time).length === 10) {
      time = parseInt(time) * 1000
    } else {
      time = +time
    }
    const d = new Date(time)
    const now = Date.now()

    const diff = (now - d) / 1000

    if (diff < 30) {
      return '刚刚'
    } else if (diff < 3600) {
      // less 1 hour
      return Math.ceil(diff / 60) + '分钟前'
    } else if (diff < 3600 * 24) {
      return Math.ceil(diff / 3600) + '小时前'
    } else if (diff < 3600 * 24 * 2) {
      return '1天前'
    }
    if (option) {
      return this.parseTime(time, option);
    } else {
      return (
          d.getMonth() +
          1 +
          '月' +
          d.getDate() +
          '日' +
          d.getHours() +
          '时' +
          d.getMinutes() +
          '分'
      )
    }
  },
  /**
   * 表情匹配
   * @param str {string}
   * @returns {Array}
   */
  emojiMatch(str) {
    // 正则匹配表情
    let img = /\[[^\[\]]+\]/g;
    let contentImg = null;
    let content = '';
    if (img.test(str)) {
      content = str.replace(img, (matched) => {
        let emoji = matched.replace('[', '');
        emoji = emoji.replace(']', '');
        return `;;${emoji};;`;
      })
      // 去空
      content = content.split(';;');
      contentImg = content.filter(m => m);
    }
    return contentImg;
  }
}
